#include<iostream>
#include<thread>	//线程库
#include<string>
using namespace std;


void printHelloWorld(string msg)
{
	cout << msg << endl;
}


int main()
{
	//1.创建线程(thread是一个class)
	//就是创建对象，参数是一个函数的函数名, 被称为入口函数
	thread thread1(printHelloWorld, "hello world");	//"hello world"是printHelloworld函数的参数
		//会报错，这与线程执行机制有关，执行线程时不会等待执行结束再继续。
		//主程序不会停在这里等待打印hello world完才继续，而是直接往下执行。
		//执行完return 0; 后，helloworld还没有打印完，就报错。

	//thread1.join();		//会检查线程有没有执行结束，如果线程没有结束，main主线程会阻塞在该处，就是停在那个地方。

	
	//thread1.detach();	//分离子线程和主线程，主线程结束后子线程会在后台持续运行，所以终端不会显示hello world
						
	bool isJoin = thread1.joinable();	//返回一个bool值判断线程是否可以调用.join()或者.detach()
	return 0;
}